package com.ruoyi.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.common.core.domain.AjaxResult;
import com.ruoyi.system.domain.BdmGood;
import com.ruoyi.system.domain.BdmOrderItem;
import com.ruoyi.system.domain.dto.BdmGoodDto;
import com.ruoyi.system.domain.dto.IntegralGoodDto;
import com.ruoyi.system.domain.dto.PointExchangeRecordDto;
import com.ruoyi.system.domain.vo.BdmCloudInventoryItemVoList;
import com.ruoyi.system.domain.vo.PointExchangeRecord;
import com.ruoyi.system.domain.vo.applet.AppletBdmGoodVo;
import com.ruoyi.system.domain.vo.applet.AppletBdmUserIntegralGoodVo;
import com.ruoyi.system.domain.vo.applet.CommodityDetailsVo;
import com.ruoyi.system.domain.vo.applet.ProductReviewsVo;
import org.springframework.web.multipart.MultipartFile;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;
import java.util.List;

/**
 * 代理商商品Service接口
 *
 * @author ruoyi
 * @date 2024-12-07
 */
public  interface  IBdmGoodService extends IService<BdmGood>
{
    /**
     * 查询代理商商品
     *
     * @param id 代理商商品主键
     * @return 代理商商品
     */
    public BdmGood selectbdmGoodById(Long id);

    /**
     * 查询代理商商品
     *
     * @param bdmGood 代理商商品
     * @return 代理商商品集合
     */
    public List<BdmGood> selectbdmGoodList(BdmGood bdmGood);

    /**
     * 首页 搜索
     * @param search
     * @return
     */
    List<BdmGood> selectHomeContents(String search);

    /**
     * 查询推荐商品列表
     * @param bdmGood
     * @return
     */
    List<AppletBdmGoodVo> selectHomeReferralsGoodList(BdmGood bdmGood);

    /**
     * 新增代理商商品
     *
     * @param bdmGood 代理商商品
     * @return 结果
     */
    public int insertbdmGood(BdmGood bdmGood);

    /**
     * 修改代理商商品
     *
     * @param bdmGood 代理商商品
     * @return 结果
     */
    public int updatebdmGood(BdmGood bdmGood);

    /**
     * 批量删除代理商商品
     *
     * @param ids 需要删除的代理商商品主键集合
     * @return 结果
     */
    public int deletebdmGoodByIds(Long[] ids);

    /**
     * 删除代理商商品信息
     *
     * @param id 代理商商品主键
     * @return 结果
     */
    public int deletebdmGoodById(Long id);

    /**
     * 查询 小程序 商品列表
     * @param bdmGood
     * return
     */
    List<AppletBdmGoodVo> listGoodVo(BdmGoodDto bdmGoodDto);


    /**
     * 根据商品 id查询 小程序 商品
     * @param goodId
     * @return
     */
    AppletBdmGoodVo goodVo(Long goodId);

    /**
     * 查询 积分商城列表
     */
    AppletBdmUserIntegralGoodVo  integralGoodList();


    boolean integralGood(IntegralGoodDto integralGoodDto);

    /**
     * 增减库存   type   BdmGoodEnum.SUB.getType() 减库存    BdmGoodEnum.ADD.getType()  回库存
     */
    void  addOrRollBackStock(List<BdmOrderItem> bdmOrderItems, Long type);

    /**
     * 查询商品评论
     */
    List<ProductReviewsVo> productReviews(Long goodId);

    /**
     * 积分商城兑换记录
     */
    List<PointExchangeRecord> pointExchangeRecord(PointExchangeRecordDto pointExchangeRecordDto);

    /**
     * 补货查看商品详情
     */
    CommodityDetailsVo getCommodityDetails(Long goodId);

    /**
     * 商品导入
     * @param file
     */
    void importProduct(MultipartFile file);

    /**
     * 获取商品二维码
     * @param goodId
     * @return
     */
    AjaxResult getGoodQrCode(Long goodId, Long userId) throws Exception;

    AjaxResult getCostPrice(BdmCloudInventoryItemVoList bdmCloudInventoryItemVoList);
}
